import { defineStore } from 'pinia'

const useCartStore = defineStore('cart', {
  state() {
    return {
      cart: [],
    }
  },
  getters: {
    totalCount(state) {
      return state.cart.reduce((sum, item) => sum + item.count, 0)
    },
    totalMoney(state) {
      return state.cart.reduce((sum, item) => sum + item.price * item.count, 0)
    },
  },
  actions: {
    // 向购物车中添加商品
    addToCart(goods) {
      // 判断当前选购商品是否已加入购物车
      const has = this.cart.find(prod => prod.id === goods.id)
      // 如果已加入购物车，则叠加选购数量即可
      // 如果不存在，则将当前选购商品对象添加到数组末尾，选购数量初始化为1
      if (has) {
        has.count += 1
      } else {
        this.cart.push({
          ...goods,
          count: 1,
        })
      }
    },
    // 删除购物车商品
    removeFromCart(id) {
      this.cart = this.cart.filter(prod => prod.id !== id)
    },
  },
})

export default useCartStore
